const http = require("http");
const fs=require("fs");
const notifier=require("node-notifier");
const path = require("path");
//将静态资源的类型存储到json文件中，通过require调用
const type=require("./contentType.json");

// console.log(type);
const server=http.createServer(function(req,res){
        let urlPath=req.url;
        //取得静态资源的链接  如：/static/style.css
        // console.log(urlPath);
        let reg=/^\/static/;
        //判断是不是静态资源，静态资源放在static文件夹中
        // console.log(reg.test(urlPath));

        if(reg.test(urlPath)){
            //处理静态资源


            try{
                //因为要设置响应头，但不知道static文件夹中不知道的是什么类型的文件，所以需要判断文件类型再去设置响应头
                //这里用到node.js提供的path模块获取文件后缀名。
                let ext=path.extname(req.url);

                res.writeHead(200,{
                    // "Content-Type":"text/css;charset=utf8"
                    "Content-Type": type[ext]
                });
                let data=fs.readFileSync("."+urlPath);
                // console.log(data);
                res.end(data.toString());
            
            }catch(error){
                res.end("<h1>请求失败</h1>");
            }

        }else{
            //处理非静态资源
            res.writeHead(200,{
                "Content-Type":type[".html"]
            });
            try{
                let data=fs.readFileSync("./template/home.html");
                // console.log(data);
                res.end(data.toString());
            
            }catch(error){
                res.end("请求失败");
            }
        }


});


    server.listen(3000,function(){
        console.log("服务器启动成功，监听localhost:3030");
        notifier.notify('服务器启动成功');
    });

    server.on("error",function(error){
        console.log("服务器启动失败"+error.message);
        notifier.notify('服务器启动失败'+error.message);
    })
